1. Field of the Invention
The present invention relates to a communication device management program, a communication device management method, and a communication management device with direct access functions, and more particularly, to a communication device management program, a communication device management method, and a communication management device capable of efficiently and directly accessing a remote node memory in a large-scale network system.
2. Description of the Related Art
In a large-scale computer network, a plurality of servers operate in cooperation with each other to provide a high-level data processing service to the users. In such a system, data transmission among the servers via a network takes place frequently. Therefore, to increase the processing capacity of the entire system, further efficient data transmission is indispensable.
FIG. 28 shows a conventional data transmission method. As shown in FIG. 28, a computer 910 and a computer 920 are connected to each other via a communication medium 930.
In the computer 910, a user application 911 and a communication device manager 912 are installed as software modules. A memory area 911a and a memory area 912a in a memory space are allocated to the user application 911 and the communication device manager 912, respectively. Also, the computer 910 is connected to the communication medium 930 via a communication device 913.
Similarly, in the computer 920, a user application 921 and a communication device manager 922 are installed as software modules. A memory area 921a and a memory area 922a in a memory space are allocated to the user application 921 and the communication device manager 922, respectively. Also, the computer 920 is connected to the communication medium 930 via a communication device 923.
Here, the sequence of data transmission in the case where the data transmission is made from the user application 911 in the computer 910 to the user application 921 in the computer 920 will be described below.
In the computer 910 at the transmitting end, the user application 911 outputs a transmission request to the communication device manager 912. The communication device manager 912 copies data from the memory area 911a of the user application to a storage medium corresponding to the memory area 912a managed by the communication device manager 912 itself. Then, the communication device manager 912 generates a packet including the data in the memory area 912a, and transmits the packet to the communication device 913. The communication device 913 transmits the received packet to the computer 920 via the communication medium 930.
In the computer 920 at the receiving end, the user application 921 outputs a reception request to the communication device manager 922, and the communication device 923 receives the packet sent via the communication medium 930. The communication device 923 transmits the received packet to the communication device manager 922. The communication device manager 922 stores the data included in the received packet in a storage medium corresponding to the memory area 922a of its own. Then, the communication device manager 922 copies the data in the memory area 922a to the memory area 921a in the user application 921. For an example of this type of data transmission, refer to W Richard Stevens “UNIX Network Programming: Second Edition Vol. 1” Piason Education, Jul. 30, 1999, pp. 48-49.
As described above, the conventional data transmission method requires data buffering tasks and data copying tasks at both ends of the transmission path. Such copying processes as described above are one of the factors that reduce the processing efficiency of entire data transmission. Therefore, in order to increase the processing efficiency of data transmission, a data transmission method that does not require data copying has been proposed. This method is called “zero-copy transmission.”
To implement zero-copy transmission, a communication device that has an RDMA (Remote Direct Memory Access) function with hardware assist is employed.
FIG. 29 shows a data transmission method using RDMA. As shown in FIG. 29, a computer 940 and a computer 950 are connected via a communication medium 960.
In the computer 940, a user application 941 and a communication device manager 942 are installed as software modules. In the user application 941, a memory area 941a is allocated in the address space. Also, the computer 940 is connected to the communication medium 960 via a communication device 943.
Similarly, in the computer 950, a user application 951 and a communication device manager 952 are installed as software modules. In the user application 951, a memory area 951a is allocated in the address space. Also, the computer 950 is connected to the communication medium 960 via a communication device 953.
Here, a sequence of data transmission from the user application 941 in the computer 940 to the user application 951 in the computer 950 will be described below.
In the computer 940 at the transmitting end, the user application 941 outputs a transmission request to the communication device manager 942. The communication device manager 942 gives an instruction of RDMA transmission to the communication device 943, and transmits data from the memory area 941a in the user application to the communication device 943. The communication device manager 942 transmits the received data to the communication device 943 using RDMA. The communication device 943 transmits the received data to the computer 950 via the communication medium 960, specifying an I/O address of the computer 950.
In the computer 950, the user application 951 outputs a reception request to the communication device manager 952, and the communication device 953 receives the data sent using RDMA transmission via the communication medium 960. The communication device 953 transmits the received data to the memory area 951a in the user application 951.
As described above, when the communication devices 943 and 953 having RDMA functions are employed, data transmission can be carried out via the communication medium 960 without data copying within either of the computers 940 and 950. Moreover, an access check technique for checking whether RDMA is done properly has been proposed (for example, refer to Japanese Unexamined Patent Publication No. 2002-351817).
In the conventional RDMA transmission, transmission has to be carried out while taking into consideration the memory area etc. at the receiving end. That is to say, before starting RDMA transmission, a sufficient memory area according to the data to be transmitted has to be reserved in the memory space at the data receiving end, and the application on each server has to recognize the address of that memory area. If the reservation processing described above should be carried out each time a transmission begins, the processing efficiency of services provided cooperatively by the servers would be reduced. To avoid this problem, the receiving computer has to reserve memory areas beforehand in preparation for receiving data from each remote computer.
However, it is wasteful to keep such memory areas even when there is no data transmission. Particularly, in the case where data transmission is carried out from many servers, the memory area for data transmission has to be reserved for each server. Accordingly, the memory area within the memory space may run out in the worst-case scenario.
For example, even in a computer with a virtual memory space, only part of the virtual memory space can be used for data transmission. Further, if the size of the data to be transmitted is large, an equally large memory area has to be reserved. Therefore, in a server that receives data transmitted from plural computers, it is, not practical to reserve a memory area for each computer connected therewith.